<?php
/**
 * 数据库连接类
 */

class ykt_db{
	private $dblink;  //数据接标实
	function ykt_db(){
		//global $dbhost,$dbuser,$dbpwd,$dbname,$dbcharset;
		if(!$this->dblink =@mysql_connect(DB_HOST,DB_USER,DB_PWD)){
				$this->halt("数据库连接失败".mysql_error());
				exit();
		}
		if(DB_NAME){
			@mysql_select_db(DB_NAME, $this->dblink) or die("数据库连接失败");
		}
		//@mysql_query("SET AUTOCOMMIT = 0");
		@mysql_query("set names '".DB_LANGUAGE."'");
	}


	function halt($msg, $debug=true){
		if($debug){
			echo "<p style=\"font-family: Verdana, Tahoma; font-size: 12px; background: #FFFFFF;\">".$msg."</p>\n\n";
			exit();
		}
	}

	/**
	 *这个函数用于送出查询语句并返回结果，常用。
	 */
	function query($sql){
		if($result=@mysql_query($sql,$this->dblink)){
			return $result;
		}else{
			//$this->halt("SQL语句执行错误，请联系管理员");
			//$this->halt("SQL语句错误： <font color=red>$sql</font> <BR><BR>错误信息： ".mysql_error());
			return false;
		}
	}

	/**
	*这个函数是返回数组里的
	*/
	function getRow($sql){
        $res = $this->query($sql);
        if ($res !== false){
            $arr = array();
            while ($row = @mysql_fetch_row($res)){
                $arr[] = $row[0];
            }
            return $arr;
        }else{
            return false;
        }
    }

	/**
	 * 以下函数用于从结果取回数组
	 */
	function getarray($result){
		return @mysql_fetch_array($result);
	}


	/**
	 * 返回一行记录
	 */
	function getoners($sql,$fieldsNum=""){
		$res=$this->query($sql);
		if($res){
			if(!empty($fieldsNum)){
				$row=@mysql_fetch_array($res);
				return $row[$fieldsNum];
			}else{
			    return @mysql_fetch_array($res);
			}
		}else{
			return false;
		}
	}
	/*
	 * 获取result 的总条数 
	 */
	function getresultcount($result){
		return @mysql_num_rows($result);
	}
	
	/**
	 * 以下函数返回符合查询条件的总行数
	 */
	function getcount($sql){
		$resut=$this->query($sql);
		return @mysql_num_rows($resut);
	}

	/**
	 * 获取字段个数
	 */
	function getfieldscount($result){
		return @mysql_num_fields($result);
	}
	/**
	 * 把数据返回 二维数组
	 */
	function GetDatalist($result)
	{
		$Datalist=array();
		$j=0;
		$fieldscount=@mysql_num_fields($result);
		while($row=@mysql_fetch_array($result))
		{
			for($i=0;$i<$fieldscount;$i++)
			{
				$Datalist[$j][$i]=$row[$i];
			}
			$j++;
		}
		return $Datalist;
	}
	
	
	

	/**
	 * 更新数据库
	 */
	function update($sql){
		return $this->query($sql);
	}


	/**
	 * 以下函数用于向数据库插入一行
	 */
	function insert($sql){
		return $this->query($sql);
	}


	/**
	 * 删除数据库数据
	 */
	function delete($sql){
		return $this->query($sql);
	}

	/**
	 * 执行一条sql语句；
	 */
	function execute($sql){
		return $this->query($sql);
	}
	
	
     /**
	 * 把数据返回成二维数组
	 * @param $sql
	 */
	function getlistarr($sql){
		
		$r_list=array();
		$result=$this->query($sql);
		if($result){
			while($row=@mysql_fetch_array($result)){
				array_push($r_list,$row);
			}
			return $this->stripslashes_array($r_list);
		}else{
			return false;
		}
		
	}
	
	/**
	 *
	 */
	function stripslashes_array($value){
		$value = is_array($value) ?
					array_map(array($this,'stripslashes_array'), $value) :
					stripslashes($value);
		return $value;
	}

	
	
	/**
	 * 查询指定表是否存在
	 * @param $tablename 表名
	 */
	function istable($tablename){
		$r=0;
		if(strlen($tablename)>0){
			$s_sql="show tables like '{$tablename}'";
			$result=$this->query($s_sql);
			return @mysql_num_rows($result);
		}else{
			return $r;
		}
	}
	
	
	/**
	 *执行一条sql语名，不返回值 
	 *
	 */
	function exec($sql){
		@mysql_unbuffered_query($sql,$this->dblink);
		//return mysql_unbuffered_query;
	}


	function version()
	{
		return mysql_get_server_info($this->dblink);
	}

	/**
	 *  关闭数据连接
	 */
	function close() {
		mysql_close($this->dblink);
	}
	/**
	 *返回上一插入的id
	 */
	function getinsertid(){
		return mysql_insert_id($this->dblink);
	}


	/**
	 * 创建添加sql语句
	 * @param $tablename 表名
	 * @param $addfield 手工添加内容     menuid|1,member|10
	 * @param $notfield 手工取消添加内容    yzm|asd
	 * @return string
	 */
	function Create_Insertsql($tablename,$addfield=false,$notfield=false){
		$field_arr=array_keys($_POST);  //获取字段名
		$insarr=array();
		for($i=0;$i<count($field_arr);$i++){
			$isfield=true;
			if($notfield!==false){
				$notfieldarr=explode('|',$notfield);
				$notfieldarr_c=count($notfieldarr);
				for($k=0;$k<$notfieldarr_c;$k++){
					if($notfieldarr[$k]==$field_arr[$i]){
						$isfield=false;
						break;
					}
				}
			}
			if($isfield){
				$temp['field']=$field_arr[$i];
				$temp['value']=$_POST[$field_arr[$i]];
				if(is_array($temp['value'])){
					$temparr=$temp['value'];
					$tempvalue='';
					$valuearr_count=count($temparr);
					for($j=0;$j<$valuearr_count;$j++){
						$tempvalue.=$temparr[$j];
						if($j<$valuearr_count-1){
							$tempvalue.=",";
						}
					}
					$temp['value']=$tempvalue;
				}
				array_push($insarr,$temp);
			}
		}
		if($addfield!==false){
			$addfieldarr=explode(',',$addfield);
			$addfieldarr_c=count($addfieldarr);
			for($i=0;$i<$addfieldarr_c;$i++){
				$addfieldarrsplit=explode('|',$addfieldarr[$i]);
				$temp['field']=$addfieldarrsplit[0];
				$temp['value']=$addfieldarrsplit[1];
				array_push($insarr,$temp);
			}
			
		}
		$field='';
		$value='';
		for($i=0;$i<count($insarr);$i++){
			$field.=$insarr[$i]['field'];
			$value.="'{$insarr[$i]['value']}'";
			if($i<(count($insarr)-1)){
				$field.=',';
				$value.=',';
			}
		}
		$insert_sql="insert into {$tablename}({$field})values({$value})";
		return $insert_sql;
	}


	/**
	 * 创建修改sql语句
	 * @param $tablename 表名
	 * @param $where 条件
	 * @param $addfield 手工修改内容     menuid|1,member|10
	 * @param $notfield 手工取消修改内容    imgcode|asd
	 * @return sqlstring
	 */
	function Create_Updatesql($tablename,$where='',$addfield=false,$notfield=false){
		$field_arr=array_keys($_POST);  //获取字段名
		$updatearr=array();
		for($i=0;$i<count($field_arr);$i++){
			$isfield=true;
			if($notfield!==false){
				$notfieldarr=explode('|',$notfield);
				$notfieldarr_c=count($notfieldarr);
				for($k=0;$k<$notfieldarr_c;$k++){
					if($notfieldarr[$k]==$field_arr[$i]){
						$isfield=false;
						break;
					}
				}
			}
			if($isfield){
				$temp['field']=$field_arr[$i];
				$temp['value']=$_POST[$field_arr[$i]];
				if(is_array($temp['value'])){
					$temparr=$temp['value'];
					$tempvalue='';
					$valuearr_count=count($temparr);
					for($j=0;$j<$valuearr_count;$j++){
						$tempvalue.=$temparr[$j];
						if($j<$valuearr_count-1){
							$tempvalue.=",";
						}
					}
					$temp['value']=$tempvalue;
				}
				array_push($updatearr,$temp);
			}
		}
		if($addfield!==false){
			$addfieldarr=explode(',',$addfield);
			$addfieldarr_c=count($addfieldarr);
			for($i=0;$i<$addfieldarr_c;$i++){
				$addfieldarrsplit=explode('|',$addfieldarr[$i]);
				$temp['field']=$addfieldarrsplit[0];
				$temp['value']=$addfieldarrsplit[1];
				array_push($updatearr,$temp);
			}
		}
		$update_sql="update {$tablename} set ";
		$updatearr_c=count($updatearr);
		for($i=0;$i<$updatearr_c;$i++){
			$update_sql.="{$updatearr[$i]['field']}='{$updatearr[$i]['value']}'";
			if($i<($updatearr_c-1)){
				$update_sql.=',';
			}
		}
		$update_sql.=" where {$where} ";
		return $update_sql;
	}

}

$db=new ykt_db();
